#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
const vector<int> dx={1,-1,0,0},dy={0,0,1,-1};
int main(){
  freopen("indian.in","r",stdin);
  freopen("indian.out","w",stdout);
  ios::sync_with_stdio(false);
  cin.tie(0); cout.tie(0);
  int n,m; cin>>n>>m;
  vector<string> s(n);
  for(auto &i:s)cin>>i;
  auto valid=[&](int x,int y){
    return 0<=x&&x<n&&0<=y&&y<m;
  };
  vector<vector<pii> > p(5);
  vector<vector<vector<bool> > >
    b(5,vector<vector<bool> >(n,vector<bool>(m)));
  for(int i=0;i<n;i++)
    for(int j=0;j<m;j++){
      int c=(i*2+j+5)%5;
      if(s[i][j]=='#'){
        p[c].emplace_back(i,j);
        for(int d=0;d<4;d++){
          int x=i+dx[d],y=j+dy[d];
          if(valid(x,y)&&s[x][y]=='#')b[c][x][y]=true;
        }
      }
    }
  for(int i=-1;i<=n;i++)
    for(int j=-1;j<=m;j++){
      int c=(i*2+j+5)%5;
      if(!valid(i,j)||s[i][j]=='.'){
        for(int d=0;d<4;d++){
          int x=i+dx[d],y=j+dy[d];
          if(valid(x,y)&&s[x][y]=='#'&&!b[c][x][y])
            p[c].emplace_back(x,y),b[c][x][y]=true;
        }
      }
    }
  int t=0;
  for(int i=1;i<5;i++)
    if(p[i].size()<p[t].size())t=i;
  for(auto e:p[t])s[e.first][e.second]='1';
  for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
      if(s[i][j]=='#')s[i][j]='0';
  for(auto &i:s)cout<<i<<'\n';
  return 0;
}